package com.spzx.common.security.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.Import;
import org.springframework.scheduling.annotation.EnableAsync;
import com.spzx.common.security.config.ApplicationConfig;
import com.spzx.common.security.feign.FeignAutoConfiguration;

@Target(ElementType.TYPE)//该注解只能用于类/接口或枚举
@Retention(RetentionPolicy.RUNTIME)//注解在运行时保留
@Documented//注解信息会包含在生成的Javadoc中
@Inherited//允许子类继承父类上的该注解（若子类未显式覆盖）
// 上述4个是元注解

// 表示通过aop框架暴露该代理对象,AopContext能够访问
@EnableAspectJAutoProxy(exposeProxy = true)
// 指定要扫描的Mapper类的包的路径
@MapperScan("com.spzx.**.mapper")
// 开启线程异步执行
@EnableAsync
// 自动加载类
//导入额外的配置类,集中启用相关功能
@Import({ ApplicationConfig.class, FeignAutoConfiguration.class })
public @interface EnableCustomConfig
{

}
